<!--

/*--------copyright(c) hitomin. all rights reserved.----------*/

var exclude_ids     = new Array();
var exclude_classes = new Array();
var exclude_tags    = new Array();

var in_ids     = new Array();
var in_classes = new Array();
var in_tags    = new Array();

var font_values  = new Array( '10px', '12px', '14px', '16px', '18px' );
var font_default = 1
var font_index   = font_default;

var	cookie_days = 30 * 24;

var use_cookie = false;

function setExcludeIds( values )
{
	exclude_ids = values;
}

function setExcludeClasses( values )
{
	exclude_classes = values;
}

function setExcludeTags( values )
{
	exclude_tags = values;
}

function initFontSize()
{
	var index = readCookie( 'font_index' );

	if( index != null )
	{
		font_index = parseInt( index );

		setFontSize( font_values[ font_index ] );
	}

	use_cookie = true;
}

function setFontIndex( index )
{
	font_index = index;

	if( use_cookie )
	{
		writeCookie( 'font_index', font_index, cookie_days );
	}
}

function setDefaultFontSize()
{
	if( font_index != font_default )
	{
		setFontIndex( font_default );

		setFontSize( font_values[ font_index ] );
	}
}

function changeFontSize( n )
{
	var new_font_index = font_index;

	new_font_index += parseInt( n );

	if( new_font_index >= font_values.length )
	{
		new_font_index = font_values.length - 1;
	}

	if( new_font_index < 0 )
	{
		new_font_index = 0;
	}

	if( new_font_index != font_index )
	{
		setFontIndex( new_font_index );

		setFontSize( font_values[ font_index ] );
	}
}

function setFontSize( size )
{
	in_ids     = new Array();
	in_classes = new Array();
	in_tags    = new Array();

	document.body.style.fontSize = size;

	setRecursiveFontSize( document.body, size );
}

function setRecursiveFontSize( element, size )
{
	var use_ids     = new Array();
	var use_classes = new Array();
	var use_tags    = new Array();

	var i;

	for( i = 0; i < element.childNodes.length; i ++ )
	{
		var child_element = element.childNodes[ i ];

		includeElementInfo( child_element, use_ids, use_classes, use_tags );

		if( isChangeFont() )
		{
			if( child_element.style )
			{
				child_element.style.fontSize = size;
			}
		}

		if( child_element.hasChildNodes() )
		{
			setRecursiveFontSize( child_element, size );
		}

		excludeElementInfo( use_ids, use_classes, use_tags );
	}
}

function includeElementInfo( element, use_ids, use_classes, use_tags )
{
	var i;

	for( i = 0; i < exclude_classes.length; i ++ )
	{
		if( element.className )
		{
			if( element.className.toUpperCase() == exclude_classes[ i ].toUpperCase() )
			{
				var index = element.className.toUpperCase();

				if( in_classes[ index ] == null )
				{
					in_classes[ index ] = 1;
				}
				else
				{
					in_classes[ index ] += 1;
				}

				use_classes[ index ] = true;
				break;
			}
		}
	}

	for( i = 0; i < exclude_ids.length; i ++ )
	{
		if( element.id )
		{
			if( element.id.toUpperCase() == exclude_ids[ i ].toUpperCase() )
			{
				var index = element.id.toUpperCase();

				if( in_ids[ index ] == null )
				{
					in_ids[ index ] = 1;
				}
				else
				{
					in_ids[ index ] += 1;
				}

				use_ids[ index ] = true;
				break;
			}
		}
	}

	for( i = 0; i < exclude_tags.length; i ++ )
	{
		if( element.tagName )
		{
			if( element.tagName.toUpperCase() == exclude_tags[ i ].toUpperCase() )
			{
				var index = element.tagName.toUpperCase();

				if( in_tags[ index ] == null )
				{
					in_tags[ index ] = 1;
				}
				else
				{
					in_tags[ index ] += 1;
				}

				use_tags[ index ] = true;
				break;
			}
		}
	}
}

function excludeElementInfo( use_ids, use_classes, use_tags )
{
	var use_index;
	var in_index;

	if( countHashArray( use_ids ) > 0 )
	{
		for( use_index in use_ids )
		{
			if( in_ids[ use_index ] != undefined && in_ids[ use_index ] > 0 )
			{
				in_ids[ use_index ] -= 1;
			}
		}
	}

	if( countHashArray( use_classes ) > 0 )
	{
		for( use_index in use_classes )
		{
			if( in_classes[ use_index ] != undefined && in_classes[ use_index ] > 0 )
			{
				in_classes[ use_index ] -= 1;
			}
		}
	}

	if( countHashArray( use_tags ) > 0 )
	{
		for( use_index in use_tags )
		{
			if( in_tags[ use_index ] != undefined && in_tags[ use_index ] > 0 )
			{
				in_tags[ use_index ] -= 1;
			}
		}
	}
}

function isChangeFont()
{
	var in_index;

	if( countHashArray( in_ids ) > 0 )
	{
		for( in_index in in_ids )
		{
			if( in_ids[ in_index ] != null )
			{
				if( in_ids[ in_index ] > 0 )
				{
					return false;
				}
			}
		}
	}

	if( countHashArray( in_classes ) > 0 )
	{
		for( in_index in in_classes )
		{
			if( in_classes[ in_index ] != null )
			{
				if( in_classes[ in_index ] > 0 )
				{
					return false;
				}
			}
		}
	}

	if( countHashArray( in_tags ) > 0 )
	{
		for( in_index in in_tags )
		{
			if( in_tags[ in_index ] != null )
			{
				if( in_tags[ in_index ] > 0 )
				{
					return false;
				}
			}
		}
	}

	return true;
}

function countHashArray( array )
{
	var count = 0;

	for( var key in array )
	{
		count ++;
	}

	return count;
}

function writeCookie( name, value, hours )
{
	var expire = "";

	if( hours != null )
	{
		expire = new Date( ( new Date() ).getTime() + hours * 3600000 );
		expire = "; expires=" + expire.toGMTString();
	}

	document.cookie = name + "=" + escape( value ) + expire + ";path=/";
}

function readCookie( name )
{
	var cookieValue = "";
	var search      = name + "=";

	if( document.cookie.length > 0 )
	{
		offset = document.cookie.indexOf( search );

		if( offset != -1 )
		{
			offset += search.length;

			end = document.cookie.indexOf( ";", offset );

			if( end == -1 ) end = document.cookie.length;

			cookieValue = unescape( document.cookie.substring( offset, end ) );
		}
	}

	return cookieValue;
}

//-->
